package com.gitee.wsl.compose.ui.base

import androidx.compose.foundation.interaction.DragInteraction
import androidx.compose.foundation.interaction.Interaction
import androidx.compose.foundation.interaction.MutableInteractionSource
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf

/**
 * creator: lt  2022/9/26  lt.dygzs@qq.com
 * effect : 监听[DragInteraction]的状态变化
 *          Listen the [DragInteraction]
 * warning:
 */
class DragInteractionSource(
    private val dragInteractionChange: (DragInteraction) -> Unit
) : MutableInteractionSource {
    override val interactions: Flow<Interaction>
        get() = flowOf()

    override suspend fun emit(interaction: Interaction) {
        (interaction as? DragInteraction)?.let(dragInteractionChange)
    }

    override fun tryEmit(interaction: Interaction): Boolean {
        (interaction as? DragInteraction)?.let(dragInteractionChange)
        return true
    }
}

